/**
 * 版权所有(C)，上海勾芒信息科技，2016，所有权利保留。
 * 
 * 项目名：	total-web
 * 文件名：	BuildNumberUtil.java
 * 模块说明：	
 * 修改历史：
 * 2016年8月4日 - Debenson - 创建。
 */
package com.alex.insistence.web.util;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.InitializingBean;

import com.gomore.jeecg.util.RandomUtils;

/**
 * 取svn版本号。
 * 
 * @author Debenson
 * @since 0.1
 */
public class BuildNumberHolder implements InitializingBean {

  private String buildNumber;
  private String productVersion;

  private static BuildNumberHolder instance;

  private BuildNumberHolder() {
  }

  public synchronized static BuildNumberHolder getInstance() {
    if (instance == null) {
      instance = new BuildNumberHolder();
    }
    return instance;
  }

  /** svn版本号 */
  public void setBuildNumber(String buildNumber) {
    this.buildNumber = buildNumber;
  }

  public String getBuildNumber() {
    return buildNumber;
  }

  public void setProductVersion(String productVersion) {
    this.productVersion = productVersion;
  }

  /** 项目版本号 */
  public String getProductVersion() {
    return productVersion;
  }

  /**
   * 取得系统长版本号。
   * 
   * @return
   */
  public String getLongVersion() {
    return longVersion;
  }

  private static String longVersion;

  @Override
  public void afterPropertiesSet() throws Exception {
    try {
      boolean snapshot = false;
      if (StringUtils.isNotBlank(productVersion)) {
        productVersion = productVersion.replaceAll("\\-SNAPSHOT", "");
        snapshot = true;
      }

      String buildNumberStr = this.buildNumber;
      if (StringUtils.isBlank(buildNumberStr) || "${project.buildNumber}".equals(buildNumberStr)) {
        buildNumberStr = RandomUtils.randomNumber(3);
      }

      longVersion = productVersion + "." + buildNumberStr + (snapshot ? "-SNAPSHOT" : "");
    } catch (Exception e) {
      productVersion = "";
    }
  }

}
